package it.rikesh.aip2011.server.service;

import java.util.logging.Logger;

import org.slim3.datastore.Datastore;

import com.google.appengine.api.datastore.Text;


import it.rikesh.aip2011.client.service.HomeService;
import it.rikesh.aip2011.server.meta.HomeMeta;
import it.rikesh.aip2011.shared.model.Home;

/**
 * @author  RN
 */
public class HomeServiceImpl implements HomeService {
    private static final Logger log = Logger.getLogger(HomeServiceImpl.class.getName());
    private HomeMeta h = new HomeMeta();
    
    /**
     * Metodo che ricava la descrizione in base a type
     * @param type tipo per eseguire il filtro
     * @return restituisce la descrizione
     */
    public String getHomeDescription(String type){
        Home home=Datastore.query(h)
            .filter(h.type.equal(type))
            .asSingle();
        log.info("Query getHomeDescription("+type+") eseguito.");
        return home.getDescription().getValue();       
    }
    
    /**
     * Metodo che restituisce il nome dell'immagine 
     * @param type tipo
     * @return nome dell'immagine
     */
    public String getHomeImg(String type){
        if(type.equals("area"))
            return null;
        Home home=Datastore.query(h)
            .filter(h.type.equal(type))
            .asSingle();
        log.info("Query getHomeDescription("+type+") eseguito.");
        return home.getImg();     
    }
    
    /**
     * Metodo che restituisce il titolo della homepage 
     * @param type tipo
     * @return titolo
     */
    public String getHomeTitle(String type){
        if(type.equals("area"))
            return null;
        Home home=Datastore.query(h)
            .filter(h.type.equal(type))
            .asSingle();
        log.info("Query getHomeTitle("+type+") eseguito.");
        return home.getTitle();    
    }
    
    /**
     * Metodo che restituisce il sottotitolo della homepage 
     * @param type tipo
     * @return sottotitolo
     */
    public String getHomeSubTitle(String type){
        if(type.equals("area"))
            return null;
        Home home=Datastore.query(h)
            .filter(h.type.equal(type))
            .asSingle();
        log.info("Query getHomeSubTitle("+type+") eseguito.");
        return home.getSubtitle();    
    }
    
    /**
     * Metodo che aggiorna la descrione in base a un tipo
     * @param type tipo per eseguire il filtro
     * @param description descrizione da aggiornare
     */
    public String setHome(String type, String description) {
        Home home=Datastore.query(h)
        .filter(h.type.equal(type))
        .asSingle();
        home.setDescription(new Text(description));
        Datastore.put(home);
        log.info("Query setHome("+type+","+description+") eseguito.");
        return "Eseguito";
    }
}
